// 在遍历链表前，将当前指针的 next 指针改为指向前一个元素，由于节点没有引用其上一个节点，因此
// 必须实现存储其前一个元素，在更改引用前，还需要另一个指针来存储下一个节点，不要忘记在最后返
// 回新的头引用
var reverseList = function (head) {
  let pre = null,
      cur = head;
  while (cur !== null) {
    let temp = cur.next;
    cur.next = pre;
    pre = cur;
    cur = temp;
  }
  return pre;
}


// 递归
var reverseList = function (head) {
  return reverse(null, head);
}

function reverse(prev, curr) {
  if (!curr) return prev;
  let temp = curr.next;
  curr.next = prev;
  return reverse(curr, temp);
}